﻿////////////////////////////////////////////////////////////////////////////////
//
//  ****************************************************************************
//  * Project   : FWZip
//  * Unit Name : fwzip.inc
//  * Purpose   : Набор классов для распаковки ZIP архива
//  * Author    : Александр (Rouse_) Багель
//  * Copyright : © Fangorn Wizards Lab 1998 - 2025.
//  * Version   : 2.0.8
//  * Home Page : http://rouse.drkb.ru
//  * Home Blog : http://alexander-bagel.blogspot.ru
//  ****************************************************************************
//  * Stable Release : http://rouse.drkb.ru/components.php#fwzip
//  * Latest Source  : https://github.com/AlexanderBagel/FWZip
//  ****************************************************************************
//
//  Используемые источники:
//  ftp://ftp.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip
//  http://zlib.net/zlib-1.2.5.tar.gz
//  http://www.base2ti.com/
//

// Данный модуль предназначен для глобального включения
// директив настройки пакета FWZip

// Если необходимо использовать ZLibEx раскоментируйте директиву ниже
// {$DEFINE USE_ZLIB_EX}

// Если необходимо использовать внешнюю библиотеку раскоментируйте директиву ниже
// {$DEFINE USE_ZLIB_DLL}

// Если необходима поддержка сжатия/распаковки по старому варианту
// c генерацией ZLib заголовка раскоментируйте директиву ниже
// Но есть нюанс - распаковка с автогенерируемым заголовком в очень редких случаях
// не сможет открыть архивы созданные при помощи 7Zip
// {$DEFINE USE_AUTOGENERATED_ZLIB_HEADER}

// Настройки только под FPC!!!
// Если необходимо использовать штатный модуль ZLib идущий в составе Lazarus
// раскоментируйте директиву ниже
// {$DEFINE USE_DEFAULT_FPC_ZLIB}


// ВНИМАНИЕ!!!
// =============================================================================

// КОД СЛЕДУЮЩИЙ НИЖЕ НЕ ПРЕДНАЗНАЧЕН ДЛЯ ИЗМЕНЕНИЯ ПРОГРАММИСТОМ И
// СОДЕРЖИТ КРИТИЧЕСКИЕ НАСТРОЙКИ ДЛЯ БИБЛИОТЕКИ FWZip

// Lazarus предлагает использовать внешнюю библиотеку
// отключаем такое поведение и включаем использование скомпиленых обьектников
{$IFDEF FPC}
  {$IFDEF USE_DEFAULT_FPC_ZLIB}
    // в случае использования штатной zlib в структуре используется pByteF
    // вместо обычного pByte, поэтому этот момент нужно учесть отдельно
    {$DEFINE USE_PBYTEF}
  {$ELSE}
    {$DEFINE USE_ZLIB_FPC}
  {$ENDIF}
  {$UNDEF USE_ZLIB_EX}
  {$UNDEF USE_ZLIB_DLL}
  {$UNDEF OLDEST_ZLIB}
  {$DEFINE FPC_TESTS}
{$ELSE}
  // deflateInit2_ и inflateInit2_ отсутствуют в Delphi вплоть до 2009-ой
  // поэтому при использовании старых версий дельфи и стандартного модуля ZLib
  // необходимо отключать использование данных функций
  {$IF COMPILERVERSION < 20.0 }
    {$DEFINE OLDEST_ZLIB}
    {$DEFINE OLDEST_DELPHI}
  {$ELSE}
    {$UNDEF OLDEST_ZLIB}
  {$IFEND}
  {$IFDEF LINUX}
    {$DEFINE LINUX_DELPHI}
    {$DEFINE DUNITX_TESTS}
  {$ELSE}
    {$DEFINE DUNIT_TESTS}
  {$ENDIF}
{$ENDIF}

// Если подключена библиотека ZLibEx, то использовать deflateInit2_ и inflateInit2_ можно
// при этом, отключаем использование внешней библиотеки
{$IFDEF USE_ZLIB_EX}
  {$UNDEF OLDEST_ZLIB}
  {$UNDEF USE_ZLIB_DLL}
{$ENDIF}

// Разрешаем использовать два устаревших метода компресии буферов
{$IFNDEF OLDEST_DELPHI}
  {$DEFINE USE_OLDEST_METHODS}
{$ENDIF}

// Если подключена внешняя библиотека, то использовать deflateInit2_ и inflateInit2_ можно
{$IFDEF USE_ZLIB_DLL}
  {$UNDEF OLDEST_ZLIB}
  {$UNDEF USE_OLDEST_METHODS}
{$ENDIF}

// Если использовать deflateInit2_ и inflateInit2_ нельзя,
// принудительно переключаемся на старый режим работы с автогенерируемыми заголовками
{$IFDEF OLDEST_ZLIB}
  {$DEFINE USE_AUTOGENERATED_ZLIB_HEADER}
  {$UNDEF USE_OLDEST_METHODS}
{$ELSE}
  {$UNDEF USE_AUTOGENERATED_ZLIB_HEADER}
{$ENDIF}
